/**
  ******************************************************************************
  * @author     Chris
  * @since      2024/6/10 12:38
  *
  * @file       hd_oled_protocol_i2c.h
  * @brief      Head file of OLED I2C Communication Protocol Hardware Driver.
  *
  * @note       This file contains the I2C Communication Protocol hardware
  *             driver's function declaration for the OLED.
  *
  * @warning    None.
  ******************************************************************************
  * Change Logs:
  *   Date           Author       Notes
  *   2024/6/10     Chris        the first version
  *
  ******************************************************************************
  */

#ifndef JLC_SKY_OLED_PROTOCOL_I2C_H
#define JLC_SKY_OLED_PROTOCOL_I2C_H

#include "pd_gpio.h"
#include "pd_i2c.h"
#include "hd_oled_protocol.h"
#include "drivers.h"

typedef struct OLEDProtocolI2CDef OLEDProtocolI2C;

/* extends {@link OLEDProtocol} */
struct OLEDProtocolI2CDef {
    OLEDProtocol oledProtocol;

    I2C *i2c;
};

extern const struct OLEDProtocolI2CClass {
    OLEDProtocolI2C *(*build)(I2C *i2c);
} OLEDProtocolI2CBuilder;

#endif // JLC_SKY_OLED_PROTOCOL_I2C_H
